package SwordOffer2;

public class day6_2 {
    /*
    * 最大删除一个数，判断源字符串是否是回文串，若是返回true，若不是删除一个字母判断新字符串
    * 1.设置双指针left，right，创建函数isPalindrome(String str, int left, int right)判断left到right间的字符串是否是回文串
    * 2.循环比较left，right值是否相等，若相等，移动left，right
    *   若不相等，删除left字符或者right字符，调用函数isPalindrome()判断余下的字符串是否为回文字符串。
    *   设置temp记录left，right不相等次数，若等于1，退出循环，返回res
    * */

    public boolean validPalindrome(String s) {
        boolean res = true;
        int left = 0;
        int right = s.length() - 1;
        int temp = 0;
        while (left <= right) {
            if ((s.charAt(left) != s.charAt(right))) {
                temp++;
                if (left == 0) {
                    res = isPalindrome(s, left + 1, right) || isPalindrome(s, left, right - 1);
                } else {
                    res = (isPalindrome(s, left + 1, right) || isPalindrome(s, left, right - 1));
                }
            }
            if (temp == 1) {
                break;
            }
            left++;
            right--;
        }
        return res;
    }

    public boolean isPalindrome(String str, int left, int right) {
        boolean res = true;
        while (left <= right) {
            if (!(str.charAt(left) == str.charAt(right))) {
                res = false;
                break;
            }
            left++;
            right--;
        }
        return res;
    }
}
